package TestPackage;

import java.util.LinkedList;

public class Pruebas {
	
	public static void main(String args[]){		
		
		getParenthesis("(()())()(()())");	
		
	}
	
	/**
	 * 
	 * @param str
	 * @return
	 */
	public static LinkedList<Integer> getParenthesis(String str){
		
		LinkedList<Integer> index = new LinkedList<Integer>();
		LinkedList<Integer> index_abierto = new LinkedList<Integer>();
		LinkedList<Integer> index_cerrado = new LinkedList<Integer>();
		
		for(int i=0; i<str.length(); i++){
			
			if(str.charAt(i)=='('){
				index_abierto.add(i);
				
			}else if(str.charAt(i)==')'){
				index_cerrado.add(i);
				
			}else{
				
			}			
		}
		//System.out.println("Abiertos: "+index_abierto+" Cerrados: "+index_cerrado);
		
		int index1=0;
		int index2=1;
		int index3=0;
		
		while(index_abierto.size()>1){			
			if(index_cerrado.get(index3)> index_abierto.get(index1)){
				if(index_cerrado.get(index3)< index_abierto.get(index2)){
					index.add(index_abierto.get(index1));
					index.add(index_cerrado.get(index3));
					index_abierto.remove(index1);
					index_cerrado.remove(index3);
					index1=0;
					index2=1;
					
				}else{
					if(index2==(index_abierto.size()-1)){
						index.add(index_abierto.get(index2));
						index.add(index_cerrado.get(index3));
						index_abierto.remove(index2);
						index_cerrado.remove(index3);
						index1=0;
						index2=1;
					}else{
						index1++;
						index2++;
					}
				}			
			}
			
		}
		
		index.add(index_abierto.get(0));
		index.add(index_cerrado.get(0));		
		
		//System.out.println(index);	
		
		return index;
		
	}
	
	

}
